﻿#define _CRT_SECURE_NO_WARNINGS
// ↑ 将本行在代码放在第一行可以避免 scanf的报错问题（仅在VS编译器里）
#include "game.h"

//【定义】1.棋盘初始化
void InitBoard(char b[ROW][ROW], int r, int c)
{
	//printf("测试\n");
	int i = 0;
	int j = 0;
	for (i = 0; i < r; i++)
	{
		for (j = 0; j < c; j++)
		{
			b[i][j] = ' ';
		}
	}
}
//----------------------------

//【定义】2.显示棋盘
void DisplayBoard(char b[ROW][COL], int r, int c)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < r; i++)
	{
		for (j = 0; j < c; j++)
		{
			printf(" %c ", b[i][j]);
			if (j < c - 1)
			{
				printf("|");
			}
		}
		printf("\n");
		if (i < r - 1)
		{
			for (j = 0; j < c; j++)
			{
				printf("---");
				if (j < c - 1)
				{
					printf("|");
				}
			}
			printf("\n");
		}
	}
}
//----------------------------

//【定义】3.玩家下棋
void PlayerMove(char b[ROW][COL], int r, int c)
{
	
	int x = 0;
	int y = 0;
	printf("【玩家回合】\n");
	while (1)
	{
		printf("请输入下棋坐标\n");
		DisplayBoard(b, ROW, ROW);//优化
		scanf("%d %d", &x, &y);
		if (x-1 < r && y-1 < c && x-1 >= 0 && y-1 >= 0)
		{
			if (b[x-1][y-1] == ' ')
			{
				b[x-1][y-1] = '*';
				system("cls");//优化
				printf("玩家落棋【*】坐标【%d，%d】\n【玩家回合】\n\n", x, y);
				DisplayBoard(b, ROW, ROW);//优化
				Sleep(2000);//优化
				break;
			}
			else
			{
				system("cls");//优化
				printf("输入位置已被占用，请重新输入\n【玩家回合】\n");//优化
			

			}
		}
		else
		{
			system("cls");//优化
			printf("输入坐标值超出范围%d*%d,请重新输入\n【玩家回合】\n",r,c);//优化
		}
	}
}
//----------------------------

//【定义】4.电脑下棋
void ComputerMove(char b[ROW][COL], int r, int c)
{
	
	printf("\n【电脑回合】\n");//优化
	printf("思考中...\n");//优化
	DisplayBoard(b, ROW, ROW);//优化
	Sleep(1000);//优化
	int x = 0;
	int y = 0;
	while (1)
	{
		x = rand() % r;
		y = rand() % c;
		if (b[x][y] == ' ')
		{
			b[x][y ] = '#';
			system("cls");
			printf("电脑落棋【#】坐标【%d，%d】\n",x+1,y+1);//优化
			break;
		}
	}
}
